#ifndef BASE_TYPEFUSER_H
#define BASE_TYPEFUSER_H

// type fuse virtual base class
#include <Eigen/Dense>

class BaseTypeFuser {
 public:
  BaseTypeFuser();
  BaseTypeFuser(BaseTypeFuser const&) = delete;
  BaseTypeFuser& operator=(BaseTypeFuser const&) = delete;
  BaseTypeFuser(BaseTypeFuser&&) = delete;
  BaseTypeFuser& operator=(BaseTypeFuser&&) = delete;
  virtual ~BaseTypeFuser();

  /// @brief Init parameters
  /// @param
  /// @return True if fuse type successfully, false otherwise
  virtual void Init(int type_count) = 0;

  /// @brief Fuse type for each object
  /// @param
  /// @param
  /// @return True if fuse type successfully, false otherwise
  virtual int FuseType() = 0;
};

#endif